package com.da.javatest.interview.session2;

/**
 * @author chenlida
 * @date 2020/3/28 19:29
 * @description 原子性测试
 */
public class Test02Atomic {
    public static void main(String[] args) {
        MyDataClass myData = new MyDataClass();
        for (int i = 1; i <= 20; i++) {
            new Thread(() -> {
                for (int j = 0; j < 1000; j++) {
                    myData.addPlusPlus();
                    myData.atomicPlus();
                }
            }).start();
        }

        // 如果后台线程大于2则让其他线程先运行
        while (Thread.activeCount() > 2) {
            // Thread.yield()方法，译为线程让步。顾名思义，就是说当一个线程使用了这个方法之后，它就会把自己CPU执行的时间让掉，
            // 让自己或者其它的线程运行，注意是让自己或者其他线程运行，并不是单纯的让给其他线程。
            Thread.yield();
        }

        System.out.println(myData.num);
        System.out.println(myData.atomicInteger.get());
    }
}
